package com.datastructure.test.addlistnode;

public class AddListNode {

    public static void main(String[] args) {
        ListNode l1 = new ListNode(9);
        l1.next=new ListNode(9);
        l1.next.next=new ListNode(9);
        ListNode l2 = new ListNode(9);
        l2.next=new ListNode(9);
        l2.next.next=new ListNode(0);
        AddListNode addListNode = new AddListNode();
        ListNode listNode = addListNode.ListAdd(l1, l2);
        System.out.println(listNode);
    }

    public ListNode ListAdd (ListNode l1, ListNode l2) {
        // write code here
        int val=0;
        ListNode node=new ListNode(-1);
        ListNode temp=node;

        while(l1!=null||l2!=null||val!=0){
            int lval=l1==null?0:l1.val;
            int rval=l2==null?0:l2.val;
            int num=lval+rval+val;
            int c=num%10;
            val=num/10;
            temp.next=new ListNode(c);
            temp=temp.next;

            if(l1 != null) l1 = l1.next;
            if(l2 != null) l2 = l2.next;

        }
        return node.next;
    }
}

class ListNode {
   int val;
   ListNode next = null;
   public ListNode(int val) {
     this.val = val;
   }
 }
